package org.example.link_list;

public class Remove_linked_list_elements {
    public static void main(String[] args) {
        //移除链表元素

        //给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
        int val = 4;
        ListNode listNode1 = new ListNode(1);
        listNode1.next=null;
        ListNode listNode2 = new ListNode(2,listNode1);
        ListNode listNode3 = new ListNode(3,listNode2);
        ListNode listNode4 = new ListNode(4,listNode3);
        ListNode listNode5 = new ListNode(5,listNode4);
        ListNode head = new ListNode(6,listNode5);
        ListNode p = head;
        ListNode q = null;
        while(p!=null){
            if (p.val==val){
                if (q==null){
                   q = p.next;
                   p.next = null;
                   p = q;
                   head = p;
                   q = null;
                }else {
                    q.next = p.next;
                    p.next = null;
                    p = q.next;
                }
            }else {
                q = p;
                p = p.next;
            }
        }
        System.out.println(head.val);
    }
}
